package yellow5a5.sample.ShareDemo; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; import android.text.TextUtils; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import yellow5a5.sample.R; /** * Created by Yellow5A5 on 16/9/17. */ public class ShareItemView extends RelativeLayout { private int ANIM_START = 0; private int ANIM_REVERSE = 1; private int mAnimMode = 0; private ImageView mImageV; private TextView mTextV; private ValueAnimator animator; public ShareItemView(Context context) { this(context, null); } public ShareItemView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ShareItemView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); TypedArray array = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ShareItemView, 0, 0); int imgId = array.getResourceId(R.styleable.ShareItemView_share_img, 0); String text = array.getString(R.styleable.ShareItemView_share_text); LayoutInflater.from(context).inflate(R.layout.share_item, this, true); mImageV = (ImageView) findViewById(R.id.img_left); mTextV = (TextView) findViewById(R.id.tv_right); setImageShare(imgId); setTextShare(text); initAnimation(); setAlpha(0); } private void initAnimation() { animator = ValueAnimator.ofFloat(0, 1).setDuration(300); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float factor = (float) animation.getAnimatedValue(); setTranslationY((1 - factor) * 100); setAlpha(factor); } }); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { if(mAnimMode == ANIM_START) { }else if(mAnimMode == ANIM_REVERSE){ setVisibility(GONE); } } }); } public void setTextShare(String text) { if (!TextUtils.isEmpty(text)) { mTextV.setText(text); } } public void setImageShare(int resId) { if (resId != 0) { mImageV.setImageResource(resId); } } public void showAnimation() { setVisibility(View.VISIBLE); mAnimMode = 0; animator.start(); } public void hideAnimation() { mAnimMode = 1; animator.reverse(); } }